Python。如何定义一个可由多进程池从命令行参数访问的全局变量?

您所在的位置:网站首页 python多进程 通信 Python。如何定义一个可由多进程池从命令行参数访问的全局变量?

Python。如何定义一个可由多进程池从命令行参数访问的全局变量?

#Python。如何定义一个可由多进程池从命令行参数访问的全局变量?| 来源: 网络整理| 查看: 265

我有一个脚本,正在从一个大的数据集中产生文件,所以我使用多处理来加速事情的发展。我遇到的问题是,我的脚本使用argparse库接受几个命令行参数,这些参数会改变结果,我正在努力将这些命令行参数传递给多处理池调用的函数。

我相信这个问题的解决方法非常简单,只是我没有看到。我想我应该做一个全局变量,这个变量会被更新以反映命令行的参数,但我的函数被池子调用时仍然有旧值。我试着在下面说明我的问题。

output_dir = 'default' def do_task(item): print(output_dir) # Prints 'default' result = process_item(item) write_to_file(data=result, location=os.path.join(output_dir, item.name)) def do_multi_threaded_work(data_path): print(output_dir) # Prints command line argument data = read_from_file(args.input_file) pool = multiprocessing.Pool() for i, _ in enumerate(pool.imap_unordered(do_task, data): print('Completed task %d/%d' % (i, len(data))) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-o', '--output-dir') parser.add_argument('-i', '--input-file') args = parser.parse_args() output_dir = args.output_dir do_multithreaded_work(args.input_file)

我怎样才能确保我的文件是根据命令行参数保存到正确的目录?

Edit:有人建议我做下面的代码,但是考虑到我的实际代码中有相当多的常量(在这个例子中我只简化为1),这似乎非常混乱,而且有悖直觉。是否真的没有更好的方法来设置一个全局常量,让它可以被do_task函数访问,而不需要硬编码值?

from itertools import repeat ... def do_multi_threaded_work(data_path): ... for i, _ in enumerate(pool.imap_unordered(do_task, zip(data, repeat(output_dir))):


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3